package main

import "C"
import (
	"fmt"
	SunnyNet "gitee.com/go_888/sunnynet/SunnyNet"
	public "gitee.com/go_888/sunnynet/public"
	"time"
)

func main() {
	s := SunnyNet.X创建中间件()
	//如果在Go中使用 设置Go的回调地址
	s.X设置Go回调地址(HttpCallback, TcpCallback, WSCallback, UdpCallback)
	Port := 2024
	s = s.X设置端口(Port).X启动()
	//开启随机TLS指纹
	s.X是否使用随机TLS指纹(true)
	s.X添加进程名代理("http.exe") //进程名称
	fmt.Println(s.X开始进程代理())
	err := s.Error
	if err != nil {
		panic(err)
	}
	fmt.Println("Run Port=", Port)
	time.Sleep(24 * time.Hour) //避免程序退出
}
func HttpCallback(Conn *SunnyNet.HttpConn) {
	if Conn.X请求类型 == public.X常量_HTTP消息类型_发送请求 {
		fmt.Println(Conn.X请求体.URL.String())
		//发起请求
		新url := "www.baidu.com"
		Conn.X请求体.URL.Host = 新url

		//直接响应,不让其发送请求
		//Conn.StopRequest(200, "Hello Word")
	} else if Conn.X请求类型 == public.X常量_HTTP消息类型_接收完成 {
		//请求完成
	} else if Conn.X请求类型 == public.X常量_HTTP消息类型_请求失败 {
		//请求错误
	}
}
func WSCallback(Conn *SunnyNet.WsConn) {

	//fmt.Println(Conn.Url)
}
func TcpCallback(Conn *SunnyNet.TcpConn) {
	//fmt.Println(Conn.Pid, Conn.LocalAddr, Conn.RemoteAddr, Conn.Type, Conn.GetBodyLen())
}
func UdpCallback(Conn *SunnyNet.UDPConn) {
	if public.X常量_UDP消息类型_客户端收到数据 == Conn.X请求类型 {
		fmt.Println("接收UDP", Conn.X本地地址, Conn.X远程地址, len(Conn.X数据))
	}
	if public.X常量_UDP消息类型_客户端发送数据 == Conn.X请求类型 {
		fmt.Println("发送UDP", Conn.X本地地址, Conn.X远程地址, len(Conn.X数据))
	}
	if public.X常量_UDP消息类型_关闭 == Conn.X请求类型 {
		fmt.Println("关闭UDP", Conn.X本地地址, Conn.X远程地址)
	}

}
